﻿using System; 
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ADV_Evaluator;
using ADV_Evaluator.Data;


namespace ADV_Editor.SystemDialog {

    /// <summary>
    /// ゲーム設定ダイアログ
    /// </summary>
    public partial class ProjectSettingDialog : DialogBase {

        ProjectData projectData;

        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="projectData">プロジェクトの設定データ</param>
        public ProjectSettingDialog(ProjectData projectData) {
            // 引数を保存
            this.projectData = projectData;
            // コンポーネントの初期化
            InitializeComponent();
            // コントロールに初期値をセットする
            textBox_GameTitle.Text = projectData.GameTitle;
            numericUpDown_WindowWidth.Value = projectData.WindowWidth;
            numericUpDown_WindowHeight.Value = projectData.WindowHeight;
			if (!projectData.LayerSlot.Equals(0))
			{ numericUpDown_LayerSlot.Value = projectData.LayerSlot; }
			else
			{ numericUpDown_LayerSlot.Value = 1; }
            // OKボタンをロックする
            LockOKButton();
        }

        /// <summary>
        /// フォームに入力された値を元に作られたプロジェクト設定データ
        /// </summary>
        public ProjectData ProjectData {
            get {
                ProjectData data = new ProjectData();
                data.Name = projectData.Name;
                data.InitialScenario = projectData.InitialScenario;
                data.GameTitle = textBox_GameTitle.Text;
                data.WindowWidth = Convert.ToInt32(numericUpDown_WindowWidth.Value);
                data.WindowHeight = Convert.ToInt32(numericUpDown_WindowHeight.Value);
                data.LayerSlot = Convert.ToInt32(numericUpDown_LayerSlot.Value);
                return data;
            }
        }

        /// <summary>
        /// ゲームタイトルの値が書き換わったとき
        /// </summary>
        private void textBox_GameTitle_TextChanged(object sender, EventArgs e) {
            LockOKButton();
        }
        /// <summary>
        /// ウィンドウ幅の値が変化したとき
        /// </summary>
        private void numericUpDown_WindowWidth_ValueChanged(object sender, EventArgs e) {
            LockOKButton();
        }
        /// <summary>
        /// ウィンドウ高さの値が変化したとき
        /// </summary>
        private void numericUpDown_WindowHeight_ValueChanged(object sender, EventArgs e) {
            LockOKButton();
        }

        /// <summary>
        /// フォームの値が適正なときのみOKボタンを押せるようにする
        /// </summary>
        private void LockOKButton() {
            // いまのところ何もしない
        }

        #region ヘルプ
        /// <summary>
        /// OKボタンのヘルプ
        /// </summary>
        protected void button_OK_HelpRequested(object sender, HelpEventArgs hlpevent) {
            ShowPopupHelp(sender, "このダイアログを閉じて、コマンドを追加します。");
        }
        /// <summary>
        /// キャンセルボタンのヘルプ
        /// </summary>
        protected void button_Cancel_HelpRequested(object sender, HelpEventArgs hlpevent) {
            ShowPopupHelp(sender, "変更内容を保存せずにこのダイアログを閉じます。");
        }
        /// <summary>
        /// ゲームタイトルのヘルプ
        /// </summary>
        private void groupBox_GameTitle_HelpRequested(object sender, HelpEventArgs hlpevent) {
            ShowPopupHelp(sender, "ゲームの題名を指定します。");
        }
        /// <summary>
        /// ゲームのウィンドウサイズのヘルプ
        /// </summary>
        private void groupBox_WindowSize_HelpRequested(object sender, HelpEventArgs hlpevent) {
            ShowPopupHelp(sender, "ゲームを起動するときのウィンドウの大きさを指定します。");
        }
        #endregion

    }
}